package entities;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "LENING")
public class Lening
{
	private int id;
	private Date begindatum;
	private Date einddatum;
	private Date ingeleverd;
	private Boek boek;
	private Lid lid;
	
	// Constructors
	
	/**
	 * Constructor voor Hibernate
	 */
	@SuppressWarnings("unused")
	private Lening()
	{
		
	}
	public Lening(Date begindatum, Date einddatum, Boek boek, Lid lid)
	{
		this.begindatum = begindatum;
		this.einddatum = einddatum;
		this.boek = boek;
		this.lid = lid;
	}
	
	// Getters en Setters
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id")
	public int getId()
	{
		return id;
	}
	public void setId(int id)
	{
		this.id = id;
	}
	@Column(name = "begindatum")
	public Date getBegindatum()
	{
		return begindatum;
	}
	public void setBegindatum(Date begindatum)
	{
		this.begindatum = begindatum;
	}
	@Column(name = "einddatum")
	public Date getEinddatum()
	{
		return einddatum;
	}
	public void setEinddatum(Date einddatum)
	{
		this.einddatum = einddatum;
	}
	@Column(name = "ingeleverd")
	public Date getIngeleverd()
	{
		return ingeleverd;
	}
	public void setIngeleverd(Date ingeleverd)
	{
		this.ingeleverd = ingeleverd;
	}
	@OneToOne(cascade = CascadeType.ALL)
	public Boek getBoek()
	{
		return boek;
	}
	public void setBoek(Boek boek)
	{
		this.boek = boek;
	}
	@OneToOne(cascade = CascadeType.ALL)
	public Lid getLid()
	{
		return lid;
	}
	public void setLid(Lid lid)
	{
		this.lid = lid;
	}
	
	// Methoden
	
	public String toString()
	{
		return String.format("%s\t | %s\t | %s\t | %s\t | %s", boek.getTitel(), begindatum.toString(), einddatum.toString(), ingeleverd == null ? "" : ingeleverd.toString(), ((Persoon)lid).toString());
	}
}
